A communication network typically includes a core network and at least one access network. The core network is the central part of the communication network and serves as the backbone of the communication network. The core network generally includes high capacity switches and transmission equipment.
Each access network serves as a point of contact with the communication network for users. An access network connects subscribers with service providers. A communication network may have multiple access networks, serving different sets of users, in communication with a single core network.
Typically, a user device in an access network requests a certain piece of content, such as a web page or a file. The request for content is typically forwarded through the access network to the core network. Within the access network, a number of devices may facilitate the delivery of requests and information from a user to the core network. A user typically interacts with an access network through a base station that receives information and requests from the user device. The base station forwards information and requests through the access network towards the core network. The base station typically routes data through an intermediate service platform, such as a network controller or switch, on the way to the core network.
The content is sent back through the access network through the gateway to the intermediate service platform and the base station, which provides the content to the user device. The content is often broken into small units, such as bytes or data packets, and transmitted piece-by-piece to be reassembled at the user device.
One exemplary protocol that facilitates this data transmission process is Transmission Control Protocol (TCP). TCP was originally designed to operate in conventional wire-line networks. Such networks may be characterized as having very low error rates, fairly constant data rates, and delay which is constant or slowly varying. If data losses occur, they are generally due to congestion in the network. Similarly, delay variation is generally the result of varying fill levels in buffers at various points in the network.
Early generations of wireless access networks suffered from fairly high error rates, low (but fairly constant) data rates, and reasonably constant or slowly-varying delay. For third generation (3G) and fourth generation (4G) networks, however, lower-layer protocols have resulted in low error rates (as seen by higher-layer protocols). Partly as a result of these lower-layer improvements, packet delays in the access network can be highly variable. Adaptive rates mean that data rates can also vary greatly and quickly. As a result, the features of TCP that provide good performance in wire-line networks can result in reduced throughput, large delays, and generally-degraded user experiences in 3G and 4G broadband wireless networks.
Among other features, TCP implements a system known as the “sliding window” for ensuring that the units of data are successfully received by the user device or an intermediate platform forwarding the data to the user device (other transmission protocols also use a similar windowing system).
In a windowing system, each unit of the data is assigned a sequence number. For example, the first byte of data might be assigned sequence number 1, the second byte might be assigned sequence number 2, and so on. When the units of data are received, the receiver acknowledges to the sender that the data units were successfully transmitted, and the data units they are reassembled in the order of the sequence numbers. The sequence numbers also provide a convenient way to determine if a data unit has been lost in transmission. For example, if the sender does not receive an acknowledgement of data unit #2 in a reasonable amount of time, the sender can retransmit data unit #2. The above-described system is considered a windowing system because the receiver limits the number of data units that the receiver is willing to accept before at least some of the data units have been acknowledged (thereby creating a “window” of data that can be accepted at any given time). The limit on the number of data units is known as the window size. By limiting the window size, a protocol can effectively determine the rate at which data will be transmitted by the sender and received by the receiver. The rate may be important because of bottlenecks in the communication path between the sender and the receiver.
The transmitter may limit the number of data units that it will send before receiving an acknowledgement to a value referred to as the “congestion window”. This value may be increased, as when no data is lost (as indicated by the acknowledgements), and decreased when data is dropped, so as to ensure that data is sent at a rate close to the maximum that the network will allow. The receiver may set the maximum value of the congestion window based on its ability to buffer data, to a value referred to as the “receiver window” or the “advertised window”.
In one example, the data must pass through an intermediate device on the way from the sender to the receiver. Typically, the data rate of the path between this intermediate device and the receiver is the limiting factor in the transmission rate, and therefore represents a bottleneck. The intermediate device maintains a data buffer for temporarily holding the data before it is sent to the receiver, to help to match the data high data rate between the transmitter and the intermediate device, and the lower data rate between the intermediate device and the receiver. This intermediate device is referred to as a “bottleneck node.” It is desirable to maintain a rate of data transmission that is low enough so that the buffer is not overwhelmed (which would cause the intermediate device to cease receiving new data, thereby causing data loss), but which is high enough to cause data to be transmitted as quickly and efficiently as possible.